package internet_project.Client_Service;

import internet_project.common.Message;
import internet_project.common.MessageType;

import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.net.Socket;

/**
 * 客户端 连接到 服务器端 的一个线程
 */
public class Client_Connect_Server_Thread extends Thread {
  String[] User_List;//每调用一次在线用户就暂时存在这里
  // 要开启一直 等待接收 数据 的线程必须这个类持有 Socket
  private Socket socket;

  public Client_Connect_Server_Thread(Socket socket) {
    this.socket = socket;
  }

  public void setSocket(Socket socket) {
    this.socket = socket;
  }

  @Override
  public void run() {
    while (true) {
      try {
        ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());

        //一直等待服务器的消息，
        Message mess = (Message) ois.readObject(); //没有信息就一直阻塞在这里

//        System.out.println("接收类型"+mess.getType());

        if (mess.getType().equals(MessageType.RET_USER_LIST)) {//接收 用户在线 列表
          // 约定好 发的 用户 信息 是 user-user-user 这个形式的
          String content = mess.getContent(); // content --信息
          User_List = content.split("-");

          System.out.println("\n------------在线用户列表-------------");
          for (int i = 0; i < User_List.length; i++) {
            System.out.println("用户:" + User_List[i]);
          }
        }

// 接收 私聊 用户 发的 信息
        if (mess.getType().equals(MessageType.MESSAGE)) {
          System.out.print(mess.getSend_user() + ":");
          String content = mess.getContent();
          System.out.print(content);

        }

        // 读取是否发送成功
        if (mess.getType().equals(MessageType.SEND_MESSAGE_ISOK)) {
          System.out.println("\n系统通知:消息" + mess.getContent() + "!");
        }


        // 读取 群发 消息
        if (mess.getType().equals(MessageType.SEND_MESSAGE_ALLPERSON)) {
          //直接 打印 出来
          System.out.println("\n" + mess.getSend_user() + ":" + mess.getContent());

        }

        if (mess.getType().equals(MessageType.FILE_SEND)) {

          String path = mess.getPath();
          String[] split;
          if (path.indexOf("//") != -1) {
            split = path.split("//");

            System.out.println(mess.getSend_user() + "给你发送了文件" + split[split.length - 1] + "默认保存在src//文件下");
          } else {
            split = path.split("\\\\");
            System.out.println(mess.getSend_user() + "给你发送了文件" + split[split.length - 1] + "默认保存在src//文件下");
          }
// 拆包
          String localpath = "src//" + split[split.length - 1];
          localpath = localpath.replace("F", "");
          localpath = localpath.replace("C", "");
          localpath = localpath.replace("D", "");
          localpath = localpath.replace("E", "");
          localpath = localpath.replace(":", "");
          localpath = localpath.replace("：", "");
          localpath = localpath.replace("\r\n", "");//怕 去回车

          FileOutputStream fos = new FileOutputStream(localpath);
          fos.write(mess.getFile_data());


          fos.close();
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}
